package com.own.business.log.login.persistence.business.service;

import com.own.business.log.login.persistence.entity.bo.LogLoginBo;
import com.own.business.log.login.persistence.entity.map.LogLoginMapVo;
import com.own.business.log.login.persistence.entity.po.LogLogin;
import com.own.business.log.login.persistence.entity.query.LogLoginQuery;
import com.own.business.log.login.persistence.entity.vo.LogLoginVo;
import com.own.component.common.base.service.BaseService;

import java.time.LocalDateTime;

/**
 * LogLoginService
 *
 * @author chenxueli
 * @date 2023-08-07 22:25:01
 */
public interface LogLoginService extends BaseService<
        LogLogin,
        LogLoginBo,
        LogLoginVo,
        LogLoginMapVo,
        LogLoginQuery
        > {

    /**
     * 根据用户id查询最新的登录日志信息
     *
     * @param userId 用户id
     * @return 最新的登录日志信息
     */
    LogLogin getLastLoginTimeByUserId(Long userId);

    /**
     * 获取最近的一次登录日志信息
     *
     * @param account 账号信息
     * @param type    登录方式
     * @param status  登录的状态信息
     * @return 最新的登录日志信息
     */
    LogLogin getLastLoginTimeByAccountAndType(String account, String type, Integer status);

    /**
     * 根据时间查询当前登录失败的次数
     *
     * @param account   账号信息
     * @param type      登录方式
     * @param startTime 开始时间（不包含）
     * @param endTime   截止时间（不包含）
     * @return 登录的次数
     */
    long countByTimeAndAccountAndType(String account, String type, LocalDateTime startTime, LocalDateTime endTime);

}

